===================================== | Nofrendo version 0.58 public | | (c) 1998 Matthew Conte / DripWare | ------------------------------------- < I don't think we're in Kansas anymore > ------------------------------------- | itsbroke@classicgaming.com | | http://www.netcom.com/~itsbroke | ===================================== Sit Down and Shut Up. ===================== 1. I make emulator, you find ROMs. Crystal clear. 2. Don't send me ROMs- I have all I need, thanks. 3. Support for mappers > 34 will probably never be added. If you're going to gleefully flagellate yourself over the possibility of playing the trained version of Super Getsufuu Gaiden Warrior Golden Force Dynasty 2 (Japanese), it ain't gonna be on Nofrendo. Go play iNES or its derivative for that. I have no interest in games that your cousin saw at a Japanese flea market. 4. Ask about the source code and quickly become an organ donor. Ego. ==== - Speed - all kinds of it. All games except those which bankswitch heavily far exceed real NES speed with zero frameskip on my p133. - Bankswitching is much faster - Graphics engine rebuilt from the ground up, it now rocks - AUTO frameskip now default - Icky NESticle palette removed - New real-time state format (no longer NESticle compatible) - 10 different real-time state slots, use 0-9 to select - Keyboard remapped a bit to make room for the above (see below) - Numerous mapper 1 (MMC1) fixes- Xexyz works, among others - Dragon Warrior 3 and 4 now work, off a tip from Jim Geffre - Long filenames are now used for all files under Win95, even if you pass the shortened tildename (FILENA~1.NES). This is great for front-ends which pass only the 8.3 filename. Short names in DOS. - New command-line option "-nowhining" Please, *please* read below. - Keyboard control fix- Nofrendo will no longer freak if your joystick isn't connected and one is specified in the .ini - Joystick reading bug fixed- Commando no longer locks up - Screen shots (it's about freaking time), 99 max per game, use '/' - New VRAM discovery by D fixes Trojan up a bit Bedridden. ========== - GUS/AWExx support is hosed. Please, use the SoundBlaster driver. You can use the GUS/AWE drivers, but don't say I didn't warn you. - Bankswitching. Blah blah blah. Technical crap removed. It'll be slow until the 6502 core is modified. No ETA on that one, I'm afraid. Bitching. ========= This is a public service announcement for NES emulator users. Okay, I guess I've come up with a solution for this "dirty header" nonsense. Here's the scoop- back in the day, when s00pA k-RAd kEWl d00Dz were starting the NES emulation "scene," there were a bunch of equally k-RAd kEWl NES utilities that would casually impregnate any ROMs you used with these utilities with the authors' neet-o names. The "header" is a 16 byte identification string that tells the emulator some crucial information, the most important being what mapper number is used in the actual cartridge. Marat Fayzullin, the granddaddy of NES emulation, created the iNES format, and up through iNES 0.6, there were only 16 possible mapper numbers. There were 9 unused bytes in the 16-byte header tagged as "reserved" and this is where the aforementioned kEWl d00dZ started writing their names into. When iNES 0.7 came out, Marat changed the format to accomodate for all the new mappers that had been discovered, so another byte needed to be used- one that had been previously marked as "reserved." Well, this poses a HUGE problem- because now two bytes have to be taken into account to calculate the mapper number, and one may or may not be invalid (the bulk of ROMs out there today have shit in the headers). So what's the best thing to do? Ignore all the people who have dirty ROM headers? Well, I tried to do this, but there's too many problems, the crappy headers are already far too widespread. So I've come up with the "-nowhining" command-line option. Whining is on by default. If Nofrendo encounters a mapper number it *thinks* is invalid, it will tell you, and let you run it as a normal mapper (0-15) ROM. If it does run, I HIGHLY suggest you use my utility cajoNES to clean out the crap in the header, or hex edit it yourself. If you turn "-nowhining" on, Nofrendo will assume your headers are clean, and only attempt to run ROMs exactly as they appear. I hope this makes everyone happy. Carded. ======= This is Nofrendo, a Nintendo Entertainment System (NES) emulator for MS-DOS/Windows based PC's. It uses single-file style .NES ROMs, which you will need to dump or find yourself. That's your job, be creative. You'll need a computer, some memory, probably a monitor. Sound cards are always nice, too. Jacking yourself up on caffeine won't hurt. Turn your head and cough: ------------------------- o NES registers/PPU/battery-backed RAM; all the standard crap o 100% ASM 6502 core, courtesy Neil Bradley o Digital sound support o Support for mappers 0,1,2,3,4,7,9,11,15,16,19,21,22,23,32,33,34 o Line based graphics engine- supports raster/split screen effects o Real time save-state files, 10 slots per game o 4- and 2-button digital joystick/pad support o 5 different video modes, including one VESA 2.0 mode (faster) o LFN's under Win95 o Twin dufolator valves / overhead spindlerods o Volume control o My own "wicked accurate" palette o Screen shots (oldskool PCX format) o Automatic frameskipping / speed throttling Motivation. =========== Okay, so there's like 5 billion other NES emulators. So why another one? Why the fuck not? You see, I'm broke and need something to do when I'm not out modeling for the covers of supermarket romance novels. And since I'm a Toys 'R Us kid (I don't want to grow up), I'm getting back to my roots by playing slash emulating NES games. Idealistic. =========== Nofrendo is and _always_ will be free. I will never charge a cent for it. I will implement your requested features. I will let you pinch my routines. I will help you with your own emulator. I will drink your beer. I will NOT give you ROMs. I will NOT deal with flames. I will NOT be providing round-the-clock assistance for this program- remember what I said about not charging for it? Please respect the fact that this is a spare-time project, primarily done for my own enjoyment. It works for me and I like it. If you like it I'll be ecstatic. If not, I don't care. Hey, there's plenty of other emulators out there for you. If you can't find ROMs anymore, thank Nintendo of America for being total raging cockheads. Do NOT distribute Nofrendo in any form other than the archive provided on the homepage. Distributing Nofrendo with ROM images will most likely cause cancellation of this project. You probably won't get many chicks, either. Kinetics. ========= Should be pretty self-explanatory. Run it with no arguments to see a list of command-line switches. Get a front-end, unless you like being a command-line droid. Andrew Bond's Console Menu 2.1 (which I use), and Zoop's nifty URL seem to be the choices of champions. Additionaly, you can use the nifty configuration file, aptly titled Nofrendo.ini. This file is created the first time you run Nofrendo in the same directory in which the executable lives. I encourage you to read through the options in the .ini file, chances are they will be updated more frequently than this file. Always delete your old .ini file when upgrading to newer versions. Settings will *not* currently be saved to the .ini file (I had to attach at least some degree of laziness to the whole production). Which means you need to edit it by hand if you want Nofrendo to use your settings by default. Not too tough- I'm pretty sure you can find yourself a copy of NOTEPAD.EXE or EDIT.COM somewhere... Options passed on the command line will override what's in the .ini. Current options: -frameskip - you should know what this is by now pass "AUTO" for auto-frameskip -video - changes graphics modes -vsync - synchronize screen update to vertical retrace (eliminates 'shearing') -sound - set sound on/off/autodetect -volume - select volume level 1-16 -joy - select none/2-button/4-button gamepad -romdir - directory to look for ROMs in -savedir - directory to save .rtx/.sav/.pcx files in Keys an infinite amount of monkeys might hit: --------------------------------------------- F1 - 256x224 ModeX F2 - 256x240 ModeX F3 - 256x256 ModeX F4 - 320x240 VESA2 Linear F6 - 320x240 ModeX 0-9 - set save state slot (0 by default) F5 - save real-time state file (.rtx) where x is slot num F7 - load real-time state file (.rtx) where x is slot num F8 - toggle VSYNC F12 - reset NES hardware ~ - toggle player 1 between gamepad/keyboard - + - frameskip -/+ [ ] - volume -/+ ; ' - vblank lines -/+ , . - hblank -/+ / - save screen shot (Filenamexx.pcx) (xx is a number 01-99) \ - toggle vertical/horiztal mirroring SPACEBAR - show/hide FPS display BACKSPACE - display ROM info Dicking with vblank or hblank can fix some games that rely on extra-super-precise timing. Player controls are defined in the .ini file. It's uglier than hell, but it do until a GUI comes to town. Note that if you want to play two player games and you don't want to play Twister with your keyboard, you better rustle up a joystick for player 1. Nitrous. ======== Here's what's planned for the future, organized randomly: o Need to drop a 350 in the sound code (freq sweeps, DMC) o I'd sell my mom to get SMB 3 to work o GG codes - maybe, the Oldskool jury is still out on these o Line-based sprite engine (will fix Duck Tales, W&W, etc.) o Figure out Zelda 1 scrolling madness o GUI (uh... er, maybe) o Anything else that's requested Bleh. ===== Problems: If you're still reading (unlikely), this may help. SOUND - Basically, "-sound 0" shuts sound off, "-sound 8" autodetects, and 1-7 are specific sound cards. See the .ini for details. Setting the .ini to your card rather than autodetect will reduce startup time slightly. Loud is cool. GRAPHICS - modes 1-3 and 6 should work on any VGA card. F4 will attempt to use VESA 2.0, which is faster. Get SDD if you no have. JOYSTICK - only digital joystick support is supported right now (i.e. Gravis GamePad), 2-button and 4-button. Why? Because that's what I have, and that's what I can test out. ROMS - Nofrendo will *NO LONGER* assume that your ROM headers are dirty. It's your job to sanitize your headers, not mine. Thank all those kEWl 31337 ROM groups and ROM utilities for cocking up most of the ROM headers out there. SPEED - I'm no optimization guru. I don't know ASM, either. But I *can* dance better than Prince. Roots. ====== Software Function Cost ================================= djgpp - Compiler $0.00 Allegro - Graphics library 0.00 SEAL - Audio library 0.00 NASM - Assembler 0.00 m6502 - 6502 emulator 0.00 --------------------------------- TOTAL $0.00 <- free. As Nofrendo itself is free, everything I've used to make it is free as well. I'm broke, and can't afford a real optimizing compiler, so djgpp will have to do. Performance could be better, but compiling under pgcc speeds it up a lot, and it works fine for me on my already- obsolete p133. This will improve in the future (Nofrendo, not my computer). This is my first real program. This is the first program I've written that uses the VGA. This is the first program I've written that has sound. This is the first program I've written thas has more than one source file. Give me a break if you're going to complain- I'm just learning the basics of programming here. Others. ======= PROTONS: people who helped drag my sorry ass through 0's and 1's -------- + Jeremy Levenson - falling off the wagon with me yet again... =) + Roberto Rosario - helped immensely by providing initial code and info + Neil Bradley - his ASM skills cover for my programming ineptitude + Zophar, EFX, Jim - testing, and support that exceeds a jockstrap + Marat Fayzullin, Jeremy Chadwick, {~}!Firebug<&?$ - Cliff's notes + Jim Geffre, Bloodlust, Kevin Horton, Matthew Richey - mucho info + Chris Pile - for speedily throttling speed throttling code my way + Ian - general support, sound help, and an all-around GUS freak + Trixter / Hornet - for the right nasty oldskool bitchin' + John Dullea - PCAE- the best damn 2600 emu this side of Pakistan + Paul Robson - maybe he'll tell me what a crumpet is someday + Jim Pragit of EMUNEWS - http://members.aol.com/emunews <- start page + Brunswick Beverage, Troy NY [RIP]- I'll miss those $3.69 sixers! =( + Kenny McCormick - for taking one for the team, as usual ELECTRONS: people who didn't ---------- - Nintendo of America - the Microsoft of videogames, only worse - Girl and Girl 2 - [sic] - Shareware emulator authors - Nostalgia pimps, a-whoring they go... If you like this program, please let me know. If you don't, people probably call you "Shacki." Matt. 11 March 1998. Take Notes. =========== "To me, if you have nothing new and cool to bring to the table, then there is no sense in designing a game. Regrettably, about 80% of the video game business involves clone products and cheesy licensed titles. These are the too-numerous to mention titles that no one remembers once the ad budget runs out. Life is too short to waste on me-too efforts." -- Eugene Jarvis, Defender/Robotron creator Snore. ====== . Nofrendo Copyright 1998 Matthew Conte / DripWare software. . Multi-6502 CPU emulator by Neil Bradley (neil@synthcom.com). . Allegro library by Shawn Hargreaves. . SEAL audio library by Carlos Hasan. . Nintendo Entertainment System (NES) is a registered trademark of Nintendo of America. . The author is not affiliated with Nintendo nor does he advocate the piracy of NES games (even if he thinks NOA bites monkey schlub). . Nofrendo is freeware and can be distributed freely as long the archive remains intact and ROMs are not packaged with the program. . When you use this software you do so at your own risk. The author is not responsible for any loss or damage resulting from the use or misuse of this software.